package com.xuanzheng.company.dao;

import com.xuanzheng.company.entity.User;

import java.util.List;

public interface UserDao {
    /**
     * 根据手机号查询用户
     */
    User findByPhone(String phone);
    
    /**
     * 根据ID查询用户
     */
    User findById(String id);
    
    /**
     * 添加普通用户
     */
    boolean addNormalUser(User user);
    
    /**
     * 添加公司负责人
     */
    boolean addCompanyManager(User user);
    
    /**
     * 更新用户密码
     */
    boolean updatePassword(String phone, String newPassword);
    
    /**
     * 检查管理员账号密码
     */
    boolean checkAdmin(String adminId, String password);
    
    /**
     * 获取管理员密码
     */
    String getAdminPassword(String adminId);
    
    /**
     * 根据姓名和身份证号查询用户
     */
    User findByNameAndIdCard(String name, String idCard);
    
    /**
     * 根据姓名、身份证号和手机号查询用户
     */
    User findByNameAndIdCardAndPhone(String name, String idCard, String phone);
    
    /**
     * 更新用户信息
     */
    boolean updateUser(User user);
    
    /**
     * 获取所有用户
     */
    List<User> getAllUsers();
    
    /**
     * 根据用户名搜索用户
     */
    List<User> findUsersByName(String name);
    
    /**
     * 根据手机号搜索用户
     */
    List<User> findUsersByPhone(String phone);
    
    /**
     * 根据身份证号搜索用户
     */
    List<User> findUsersByIdCard(String idCard);
    
    /**
     * 更新用户状态
     * @param id 用户ID
     * @param status 状态：1-正常，0-禁用
     * @return 是否更新成功
     */
    boolean updateUserStatus(String id, int status);
    
    /**
     * 根据用户ID删除用户
     * @param id 用户ID
     * @return 是否删除成功
     */
    boolean deleteUserById(String id);
    
    /**
     * 更新管理员密码
     * @param adminId 管理员ID
     * @param newPassword 新密码
     * @return 是否更新成功
     */
    boolean updateAdminPassword(String adminId, String newPassword);
} 